home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / basic / chaosexe.zip / XLOGISTI.TRU < prev    next >
Text File  |  1980-01-01  |  6KB  |  182 lines

  1. !EXTERNAL
  2. !SUB XLOGISTI
  3. !PROGRAM TITLE"XLOGISTI"
  4. LIBRARY "SGLIB.TRC"
  5. DECLARE DEF LOGISTIC
  6. DIM CELL(1000),PROB(1000),G(1),H(1)
  7. CLEAR
  8. PRINT"                COMPREHENSIVE LOGISTIC MAP PROGRAM"
  9. PRINT
  10. PRINT"CHOOSE ONE OF THE FOLLOWING OPTIONS FOR THE LOGISTIC MAP:"
  11. PRINT" 1)RETURN MAP"
  12. PRINT" 2)BIFURCATION DIAGRAM"
  13. PRINT" 3)ENTROPY DIAGRAM"
  14. PRINT" 4)LYAPUNOV EXPONENT DIAGRAM"
  15. INPUT PROMPT" CHOOSE 1,2,3, OR 4: ":CHOICE
  16. CLEAR
  17. !
  18. CALL LINPUTS(CHOICE,XINT,LAMBDA,INITLAMBDA,FINLAMBDA,STEPLAMBDA,INITNUM,FINNUM,ORDER,NUMCELLS,XMIN,XMAX,YMIN,YMAX,TITLE1$,TITLE2$,VLABEL$,HLABEL$)
  19. !
  20. !GRAPHING SET-UP PROCEDURE
  21. CALL SETXSCALE(XMIN,XMAX)
  22. CALL SETYSCALE(YMIN,YMAX)
  23. CALL SETAXES(0)
  24. CALL SETTEXT(TITLE1$,HLABEL$,VLABEL$)
  25. CALL RESERVELEGEND
  26. DATA 0,0
  27. CALL DATAGRAPH(G,H,0,0,"WHITE")
  28. CALL GOTOCANVAS
  29. !
  30. IF CHOICE=1 THEN CALL CALCULATION1(LAMBDA,XINT,INITNUM,FINNUM,ORDER)
  31. IF CHOICE=2 THEN CALL CALCULATION2(XINT,INITLAMBDA,FINLAMBDA,STEPLAMBDA,INITNUM,FINNUM)
  32. IF CHOICE=3 THEN CALL CALCULATION3(XINT,INITLAMBDA,FINLAMBDA,STEPLAMBDA,INITNUM,FINNUM,NUMCELLS)
  33. IF CHOICE=4 THEN CALL CALCULATION4(XINT,INITLAMBDA,FINLAMBDA,STEPLAMBDA,INITNUM,FINNUM)
  34. !
  35. SUB LINPUTS(CHOICE,XINT,LAMBDA,INITLAMBDA,FINLAMBDA,STEPLAMBDA,INITNUM,FINNUM,ORDER,NUMCELLS,XMIN,XMAX,YMIN,YMAX,TITLE1$,TITLE2$,VLABEL$,HLABEL$)
  36.     INPUT PROMPT"INPUT INITIAL X VALUE:":XINT
  37.     IF CHOICE=1 THEN INPUT PROMPT"INPUT MU:":LAMBDA
  38.     INPUT PROMPT"INPUT NUMBER OF INITIAL THROWAWAY ITERATIONS:":INITNUM
  39.     INPUT PROMPT"INPUT TOTAL NUMBER OF ITERATIONS:":FINNUM
  40.     IF CHOICE>1 THEN
  41.        INPUT PROMPT"INPUT LOWEST MU VALUE:":INITLAMBDA
  42.        INPUT PROMPT"INPUT HIGHEST MU VALUE:":FINLAMBDA
  43.     END IF
  44.     IF CHOICE=1 THEN INPUT PROMPT"INPUT ORDER OF MAP:":ORDER
  45.     IF CHOICE=3 THEN INPUT PROMPT"INPUT # OF CELLS:":NUMCELLS
  46.     IF CHOICE=1 THEN LET ORDER$=STR$(ORDER)
  47.     IF CHOICE=1 THEN
  48.        LET XMIN=0
  49.        LET XMAX=1
  50.        LET YMIN=0
  51.        LET YMAX=1
  52.        LET TITLE1$="LOGISTIC MAP"
  53.        LET TITLE2$="X(N+"&ORDER$&")  VERSUS X(N)"
  54.        LET VLABEL$="N+"&ORDER$&" VALUE"
  55.        LET HLABEL$="N VALUE"
  56.     END IF
  57.     IF CHOICE>1 THEN
  58.        LET XMIN=INITLAMBDA
  59.        LET XMAX=FINLAMBDA
  60.        LET STEPLAMBDA=(XMAX-XMIN)/740
  61.     END IF
  62.     IF CHOICE=2 THEN
  63.        LET YMIN=0
  64.        LET YMAX=1
  65.        LET TITLE1$="LOGISTIC MAP BIFURCATION DIAGRAM"
  66.        LET TITLE2$="MU="&STR$(XMIN)&" TO MU="&STR$(XMAX)
  67.        LET VLABEL$="X"
  68.        LET HLABEL$="MU"
  69.     END IF
  70.     IF CHOICE=3 THEN
  71.        LET YMIN=INT(LOG(1/NUMCELLS))
  72.        LET YMAX=1
  73.        LET TITLE1$="LOGISTIC MAP ENTROPY"
  74.        LET TITLE2$="MU="&STR$(INITLAMBDA)&" TO MU="&STR$(FINLAMBDA)&":   #CELLS="&STR$(NUMCELLS)&":    RANDOM ENTROPY="&STR$(-LOG(NUMCELLS))
  75.        LET VLABEL$="X"
  76.        LET HLABEL$="MU"
  77.     END IF
  78.     IF CHOICE=4 THEN
  79.        LET YMIN=-3
  80.        LET YMAX=1
  81.        LET TITLE1$="LOGISTIC MAP LYAPUNOV EXPONENTS"
  82.        LET TITLE2$="MU="&STR$(INITLAMBDA)&" TO MU="&STR$(FINLAMBDA)
  83.        LET VLABEL$="LYAP EXP"
  84.        LET HLABEL$="MU"
  85.     END IF
  86. END SUB
  87.  
  88. !
  89. SUB CALCULATION1(LAMBDA,XINT,INITITERATION,ITERATIONNUM,ORDER)
  90.     PLOT LINES: 0,0;1,1           !PLOTS X(N+1)=X(N) LINE
  91.     FOR I=0 TO 1 STEP .001        !PLOTS CURVE OF Y=LAMBDA*X*(1-X)
  92.         LET J=I
  93.         FOR ORD=1 TO ORDER
  94.             LET Z=LAMBDA*J*(1-J)
  95.             LET J=Z
  96.         NEXT ORD
  97.         PLOT I,Z
  98.     NEXT I
  99.     LET X=XINT                    !PLOTS RETURN MAP
  100.     IF INITITERATION= 0 THEN
  101.        PLOT X,0;
  102.     END IF
  103.     FOR I=1 TO ITERATIONNUM
  104.         LET J=X
  105.         FOR ORD= 1 TO ORDER
  106.             LET Y=LOGISTIC(J,LAMBDA)
  107.             LET J=Y
  108.         NEXT ORD
  109.         IF I>=INITITERATION THEN
  110.            PLOT X,Y;
  111.            PLOT Y,Y;
  112.         END IF
  113.         LET X=Y
  114.     NEXT I
  115. END SUB
  116. !
  117. SUB CALCULATION2(XINT,INITLAMBDA,FINLAMBDA,STEPLAMBDA,INITNUM,FINNUM)
  118.     FOR LAMBDA=INITLAMBDA TO FINLAMBDA STEP STEPLAMBDA
  119.         LET X=XINT
  120.         FOR I=1 TO FINNUM
  121.             LET Y=LOGISTIC(X,LAMBDA)
  122.             IF I>INITNUM THEN
  123.                PLOT LAMBDA,Y
  124.             END IF
  125.             LET X=Y
  126.         NEXT I
  127.     NEXT LAMBDA
  128. END SUB
  129. !
  130. SUB CALCULATION3(XINT,INITLAMBDA,FINLAMBDA,STEPLAMBDA,INITNUM,FINNUM,NUMCELLS)
  131.     FOR LAMBDA=INITLAMBDA TO FINLAMBDA STEP STEPLAMBDA
  132.         LET ENTROPY=0
  133.         FOR L=1 TO NUMCELLS
  134.             LET CELL(L)=0
  135.         NEXT L
  136.         LET X=XINT
  137.         FOR I=1 TO FINNUM
  138.             LET Y=LOGISTIC(X,LAMBDA)
  139.             IF I>INITNUM THEN
  140.                LET L=INT(NUMCELLS*Y)+1
  141.                LET CELL(L)=CELL(L)+1
  142.             END IF
  143.             LET X=Y
  144.         NEXT I
  145.         FOR L=1 TO NUMCELLS
  146.             LET PROB(L)=CELL(L)/(FINNUM-INITNUM)
  147.             IF PROB(L)>0 THEN
  148.                LET ENTROPY=ENTROPY+PROB(L)*LOG(PROB(L))
  149.             END IF
  150.         NEXT L
  151.         PLOT LAMBDA,ENTROPY;
  152.     NEXT LAMBDA
  153. END SUB
  154. !
  155. SUB CALCULATION4(XINT,INITLAMBDA,FINLAMBDA,STEPLAMBDA,INITNUM,FINNUM)
  156.     FOR LAMBDA=INITLAMBDA TO FINLAMBDA STEP STEPLAMBDA
  157.         LET LYAP=0
  158.         LET X=XINT
  159.         FOR I = 1 TO FINNUM
  160.             LET Y=LOGISTIC(X,LAMBDA)
  161.             IF I>INITNUM THEN
  162.                LET LYAP=LYAP+LOG(ABS(LAMBDA*(1-2*Y)))      !SUM LOG DERIVATIVES
  163.             END IF
  164.             LET X=Y
  165.         NEXT I
  166.         LET LYAP=LYAP/(FINNUM-INITNUM)
  167.         IF LYAP<-3 THEN LET LYAP=-3
  168.         PLOT LAMBDA,LYAP;
  169.     NEXT LAMBDA
  170. END SUB
  171.  
  172.  
  173.  
  174. DEF LOGISTIC(X,LAMBDA)
  175.     LET LOGISTIC =LAMBDA*X*(1-X)
  176. END DEF
  177. CALL ADDLEGEND(TITLE2$,0,1,"WHITE")
  178. CALL DRAWLEGEND
  179. GET KEY VARIABLE
  180. CLEAR
  181. END 
  182.